﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace belov_test
{
    public partial class Questions : UserControl
    {
        private readonly string[] QUESTION_ITEM_LABELS = new string[]
        {
            "Спокойны и хладнокровны",
            "Последовательны и обстоятельны в делах",
            "Осторожны и рассудительны",
            "Умеете ждать",
            "Молчаливы и не любите зря болтать",
            "Обладаете спокойной, равномерной речью, с остановками, без резко выраженных эмоций, жестикуляции и мимики",
            "Сдержанны и терпеливы",
            "Доводите начатое дело до конца",
            "Не растрачиваете попусту сил",
            "Строго придерживаетесь выработанного распорядка в жизни, системы в работе",
            "Легко сдерживаете порывы",
            "Маловосприимчивы к одобрению и порицанию",
            "Незлобивы, проявляете снисходительное отношение к колкостям в свой адрес",
            "Постоянны в своих интересах и отношениях",
            "Медленно включаетесь в работу и переключаетесь с одного дела на другое",
            "Ровны в отношениях со всеми",
            "Любите аккуратность и порядок во всем",
            "С трудом приспосабливаетесь к новой обстановке",
            "Обладаете выдержкой",
            "Постепенно сходитесь с новыми людьми",
            
            "Стеснительны и застенчивы",
            "Теряетесь в новой обстановке",
            "Затрудняетесь установить контакт с новыми людьми",
            "Не верите в свои силы",
            "Легко переносите одиночество",
            "Чувствуете подавленность и растерянность при неудачах",
            "Склонны уходить в себя",
            "Быстро утомляетесь",
            "Обладаете тихой речью, иногда снижающейся до шепота",
            "Невольно приспосабливаетесь к характеру собеседника",
            "Впечатлительны до слезливости",
            "Чрезвычайно восприимчивы к одобрению и порицанию",
            "Предъявляете высокие требования к себе и окружающим",
            "Склонны к подозрительности, мнительности",
            "Болезненно чувствительны и легко ранимы",
            "Чрезвычайно обидчивы",
            "Скрытны и необщительны, не делитесь ни с кем своими мыслями",
            "Малоактивны и робки",
            "Безропотно покорны",
            "Стремитесь вызвать сочувствие и помощь у окружающих",
            
            "Неусидчивы, суетливы",
            "Невыдержанны, вспыльчивы",
            "Нетерпеливы",
            "Резки и прямолинейны в отношениях с людьми",
            "Решительны и инициативны",
            "Упрямы",
            "Находчивы в споре",
            "Работаете рывками",
            "Склонны к риску",
            "Незлопамятны и необидчивы",
            "Обладаете быстрой, страстной, со сбивчивыми интонациями речью",
            "Неуравновешенны и склонны к горячности",
            "Нетерпимы к недостаткам",
            "Агрессивный забияка",
            "Обладаете выразительной мимикой",
            "Способны быстро действовать и решать",
            "Неустанно стремитесь к новому",
            "Обладаете резкими, порывистыми движениями",
            "Настойчивы в достижении поставленной цели",
            "Склонны к резким сменам настроения",
            
            "Веселы и жизнерадостны",
            "Энергичны и деловиты",
            "Часто не доводите начатое дело до конца",
            "Склонны переоценивать себя",
            "Способны быстро схватывать новое",
            "Неустойчивы в интересах и склонностях",
            "Легко переживаете неудачи и неприятности",
            "Легко приспосабливаетесь к различным обстоятельствам",
            "С увлечением беретесь за любое новое дело",
            "Быстро остываете, если дело перестает вас интересовать",
            "Быстро включаетесь в новую работу и быстро переключаетесь с одной работы на другую",
            "Тяготитесь однообразием, будничной, кропотливой работой",
            "Общительны и отзывчивы, не чувствуете скованности с новыми людьми",
            "Выносливы и работоспособны",
            "Обладаете быстрой, громкой, отчетливой речью, сопровождающейся живыми жестами, выразительной мимикой",
            "Сохраняете самообладание в неожиданной, сложной обстановке",
            "Обладаете всегда бодрым настроением",
            "Быстро засыпаете и пробуждаетесь",
            "Часто не собранны, проявляете поспешность в решениях",
            "Склонны иногда скользить по поверхности, отвлекаться"
        };

        private const String NO_LABEL = "Нет";
        private const String YES_LABEL = "Да";
        public const int DEFAULT_LINE_DISTANCE = 15;
        private const int DEFAULT_QUESTION_LABEL_WIDTH = 600;
        private const int DEFAULT_QUESTION_LABEL_HEIGHT = 50;
        private const int DEFAULT_QUESTION_BUTTON_HEIGHT = 40;
        private const int DEFAULT_QUESTION_BUTTON_WIDTH = 100;
        private const int DEFAULT_DISTANCE_LABEL_BUTTON = 50;

        public int numQuestion = 0;
        private ArrayList m_answers = new ArrayList();
        private TestLabel m_testLabel;


        public event EventHandler TestPassed;

        public Questions()
        {
            InitializeComponent();

            this.AutoSize = true;
            this.Width = DEFAULT_QUESTION_LABEL_WIDTH;
            this.Height = DEFAULT_QUESTION_BUTTON_HEIGHT+ DEFAULT_DISTANCE_LABEL_BUTTON + DEFAULT_QUESTION_LABEL_HEIGHT;

            CreateLabel();
            CreateButtons();
        }

        public ArrayList GetAnswers()
        {
            return m_answers;
        }

        private void CreateLabel()
        {
            m_testLabel = new TestLabel();

            m_testLabel.Text = QUESTION_ITEM_LABELS[numQuestion];
            m_testLabel.TextAlign = ContentAlignment.MiddleCenter;

            m_testLabel.Width = DEFAULT_QUESTION_LABEL_WIDTH;
            m_testLabel.Height = DEFAULT_QUESTION_LABEL_HEIGHT;

            m_testLabel.Location = new Point(0, 15);

            this.Controls.Add(m_testLabel);
        }

        private void CreateButtons()
        {
            ButtonTest buttonNo = new ButtonTest();

            buttonNo.Text = NO_LABEL;
            buttonNo.TextAlign = ContentAlignment.MiddleCenter;

            buttonNo.Width = DEFAULT_QUESTION_BUTTON_WIDTH;
            buttonNo.Height = DEFAULT_QUESTION_BUTTON_HEIGHT;

            buttonNo.Location = new Point(190, 15 + DEFAULT_QUESTION_LABEL_HEIGHT + DEFAULT_DISTANCE_LABEL_BUTTON);

            buttonNo.Click += new EventHandler(ButtonOnClick);

            this.Controls.Add(buttonNo);

            ButtonTest buttonYes = new ButtonTest();

            buttonYes.Text = YES_LABEL;

            buttonYes.Width = DEFAULT_QUESTION_BUTTON_WIDTH;
            buttonYes.Height = DEFAULT_QUESTION_BUTTON_HEIGHT;

            buttonYes.Location = new Point(DEFAULT_QUESTION_BUTTON_WIDTH + 200, 15 + DEFAULT_QUESTION_LABEL_HEIGHT + DEFAULT_DISTANCE_LABEL_BUTTON);

            buttonYes.Click += new EventHandler(ButtonOnClick); 
            this.Controls.Add(buttonYes);
        }

        private void ButtonOnClick(object sender, EventArgs e)
        {
            ButtonTest button = (ButtonTest)sender;
            int answer = (button.Text == YES_LABEL) ? 1 : 0; 
            m_answers.Add(answer);
            if (m_answers.Count == QUESTION_ITEM_LABELS.Length)
            {
                EventHandler handler = TestPassed;
                if (handler != null)
                {
                    handler(sender, EventArgs.Empty);
                }
            }
            else
            {
                numQuestion++;
                m_testLabel.Text = QUESTION_ITEM_LABELS[numQuestion];
            }

        }

        public void DestroyMenu()
        {
            Controls.Clear();
        }
    }
}
